/**
 * @file Paciente.java
 * @brief Fichero que contiene la implementacion de la clase Paciente.
 * @author Houyam Charkaoui
 * @version 01.00
*/

package GestorUsuarios;

import java.io.IOException;
import java.security.NoSuchAlgorithmException;
import java.sql.SQLException;
import java.util.Date;

import GestorCitas.Cita;
import GestorCitas.EstadoCita;

/**
 * @class Paciente
 * @brief Hereda de la clase 'usuario'. Representa a los pacientes de la clinica.
 */
public class Paciente extends Usuario {

       
	/**
	 * @brief Constructor de la clase: Llama al constructor de Usuario.
	 * @param dnipasaporte Documento Nacional de Identidad para el Paciente del pais y 
	 * Pasaporte para los extranjeros.
	 * @param nombre Nombre del Paciente.
	 * @param apellidos Apellidos del Paciente.
	 * @param fechanacimiento Fecha de nacimiento del Paciente.
	 * @param genero Sexualidad del Paciente: MASCULINO o FEMENINO.
	 * @param correo Correo electronico (e-mail) del Paciente.
	 * @param telefonomovil Numero de contacto movil del Paciente.
	 * @param login Nombre de autentificacion que adquiere el Paciente para poder acceder al sistema.
	 * @param password Clave de acceso del PersonalClinica.
	 * @param estado Situacion en la que se encuentra el Paciente con respecto al centro medico:
	 *  ACTIVO, BAJA_TEMPORAL, BAJA_DEFINITIVA.
	 * @param tipo Tipo de usuario en el sistema.
	 * @throws NoSuchAlgorithmException 
	 */
	public Paciente (String dnipasaporte, String nombre,
			String apellidos, Date fechanacimiento, GeneroUsuario genero,
			String correo, int telefonomovil, String login, String password,EstadoUsuario estado,
                        String observaciones) throws NoSuchAlgorithmException
        {
		super(dnipasaporte,nombre,apellidos,fechanacimiento,genero,correo,
				telefonomovil,login,password,estado,TipoUsuario.PACIENTE,
                                observaciones);
	}
	
	/**
	 * @brief Constructor de la clase: Llama al constructor de Usuario.
	 * @param idusuario Identificador numerico del Paciente.
	 * @param dnipasaporte Documento Nacional de Identidad para el Paciente del pais y 
	 * Pasaporte para los extranjeros.
	 * @param nombre Nombre del Paciente.
	 * @param apellidos Apellidos del Paciente.
	 * @param fechanacimiento Fecha de nacimiento del Paciente.
	 * @param genero Sexualidad del Paciente: MASCULINO o FEMENINO.
	 * @param correo Correo electronico (e-mail) del Paciente.
	 * @param telefonomovil Numero de contacto movil del Paciente.
	 * @param login Nombre de autentificacion que adquiere el Paciente para poder acceder al sistema.
	 * @param password Clave de acceso del PersonalClinica.
	 * @param estado Situacion en la que se encuentra el Paciente con respecto al centro medico:
	 *  ACTIVO, BAJA_TEMPORAL, BAJA_DEFINITIVA.
	 * @param tipo Tipo de usuario en el sistema.
	 * @throws NoSuchAlgorithmException 
	 */
	public Paciente (int idusuario,String dnipasaporte, String nombre,
			String apellidos, Date fechanacimiento, GeneroUsuario genero,
			String correo, int telefonomovil, String login, String password,EstadoUsuario estado,
                        String observaciones) throws NoSuchAlgorithmException{
		super(idusuario,dnipasaporte,nombre,apellidos,fechanacimiento,genero,correo,
				telefonomovil,login,password,estado,TipoUsuario.PACIENTE,observaciones);
	}
	
	
	/**
	 * @brief Obtiene las citas del paciente entre las fechas recibidas
	 * como parametro y con el estado indicado.
	 * @param fechaIni 
	 * @param fechaFin 
	 * @param estado
	 * @return Vector de citas
	 * @throws ClassNotFoundException 
	 * @throws IOException 
	 * @throws SQLException 
	*/	
	public Cita[] getCitas(Date fechaIni , Date fechaFin,EstadoCita estado ) throws SQLException, IOException, ClassNotFoundException{
		return Cita.get(this.getIdUsuario(), null, null, fechaIni, fechaFin, estado);
	}
}